Safe Calls (?.) এবং Elvis Operator (?:)

Mobile App Development - কটলিন (Kotlin) - Null Safety এবং Smart Casts
233

Safe Calls (?.) এবং Elvis Operator (?:)

কটলিনে Safe Calls এবং Elvis Operator ব্যবহার করে null সেফটি নিশ্চিত করা হয়, যা কোডের নিরাপত্তা এবং স্থিতিশীলতা বাড়ায়। এগুলো null পয়েন্টার এক্সেপশন (NullPointerException) থেকে রক্ষা করতে সাহায্য করে এবং নিরাপদভাবে মানের অ্যাক্সেস করতে দেয়। নিচে এই কনসেপ্টগুলো বিস্তারিত আলোচনা করা হলো:


১. Safe Calls (?.)

Safe Calls ব্যবহার করে আপনি null হতে পারে এমন একটি অবজেক্টের প্রোপার্টি বা মেথডকে নিরাপদে এক্সেস করতে পারেন। Safe Call অপারেটর ?. ব্যবহার করে, যদি অবজেক্টটি null হয়, তাহলে এটি null রিটার্ন করবে এবং এক্সেপশন ঘটবে না।

উদাহরণ:

data class User(val name: String, val age: Int)

fun main() {
    val user: User? = null

    // Safe call
    val userName = user?.name
    println(userName) // আউটপুট: null
}

ব্যাখ্যা:

  • এখানে user একটি nullable User অবজেক্ট, যা null হতে পারে।
  • user?.name এর মাধ্যমে আমরা name প্রোপার্টি অ্যাক্সেস করার চেষ্টা করছি। যদি user null হয়, তাহলে userName null হয়ে যাবে এবং কোনো এক্সেপশন ঘটবে না।

২. Elvis Operator (?:)

Elvis Operator ?: ব্যবহার করে একটি ডিফল্ট মান প্রদান করতে পারেন যখন একটি মান null হয়। এটি Safe Calls-এর সাথে ব্যবহার করা হয়।

উদাহরণ:

fun main() {
    val user: User? = null

    // Safe call with Elvis operator
    val userName = user?.name ?: "Unknown User"
    println(userName) // আউটপুট: Unknown User
}

ব্যাখ্যা:

  • এখানে, user?.name যদি null হয়, তাহলে Elvis Operator (?:) ডিফল্ট মান "Unknown User" প্রদান করবে।
  • ফলে, userName variable এ "Unknown User" সংরক্ষণ হবে।

৩. Safe Calls এবং Elvis Operator একসাথে ব্যবহার

Safe Calls এবং Elvis Operator একসাথে ব্যবহার করলে, আপনি সহজেই nullable ভ্যালু প্রসেস করতে পারেন এবং একটি ডিফল্ট মান নিশ্চিত করতে পারেন।

উদাহরণ:

data class Address(val street: String)

data class User(val name: String, val age: Int, val address: Address?)

fun main() {
    val user: User? = User("Alice", 30, null)

    val street = user?.address?.street ?: "Street not available"
    println(street) // আউটপুট: Street not available
}

ব্যাখ্যা:

  • এখানে user এর address প্রোপার্টি null, তাই user?.address?.street null হবে।
  • Elvis Operator ব্যবহার করে, ডিফল্ট মান "Street not available" প্রদান করা হচ্ছে।

৪. চেইনিং Safe Calls

Safe Calls চেইনিং করার মাধ্যমে আপনি nested প্রোপার্টি নিরাপদে অ্যাক্সেস করতে পারেন।

উদাহরণ:

data class City(val name: String)

data class Address(val street: String, val city: City?)

data class User(val name: String, val address: Address?)

fun main() {
    val user: User? = User("Bob", Address("5th Avenue", null))

    // Chaining safe calls
    val cityName = user?.address?.city?.name ?: "City not available"
    println(cityName) // আউটপুট: City not available
}

ব্যাখ্যা:

  • এখানে user এর address এবং city প্রোপার্টি চেইন করে অ্যাক্সেস করা হয়েছে।
  • যদি কোন স্তরে null থাকে, তাহলে Safe Calls ব্যবহারের মাধ্যমে পুরো চেইনটি নিরাপদে কাজ করবে এবং Elvis Operator ডিফল্ট মান প্রদান করবে।

উপসংহার

কটলিনের Safe Calls (?.) এবং Elvis Operator (?:) ব্যবহার করে আপনি সহজেই null সেফটি নিশ্চিত করতে পারেন, যা প্রোগ্রামের স্থিতিশীলতা বাড়ায় এবং null পয়েন্টার এক্সেপশন থেকে রক্ষা করে। এগুলো ব্যবহার করা সহজ এবং কোডকে আরও পরিষ্কার করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...